package com.nidu.demo.config.api;

import com.alibaba.cola.dto.MultiResponse;
import com.alibaba.cola.dto.Response;
import com.alibaba.cola.dto.SingleResponse;
import com.nidu.demo.config.dto.ConfigAddCmd;
import com.nidu.demo.config.dto.ConfigListQry;
import com.nidu.demo.config.dto.ConfigUpdateCmd;
import com.nidu.demo.config.dto.ConfigCO;

import java.util.Set;

/**
 * 系统配置服务接口
 *
 * @author auto
 */
public interface SysConfigService {

    /**
     * 添加配置
     *
     * @param cmd 添加命令
     * @return 配置信息
     */
    SingleResponse<ConfigCO> add(ConfigAddCmd cmd);

    /**
     * 更新配置
     *
     * @param cmd 更新命令
     * @return 配置信息
     */
    SingleResponse<ConfigCO> update(ConfigUpdateCmd cmd);

    /**
     * 删除配置
     *
     * @param id 配置ID
     * @return 操作结果
     */
    Response delete(Long id);

    /**
     * 批量删除配置
     *
     * @param ids 配置ID列表
     * @return 操作结果
     */
    Response delete(Set<Long> ids);

    /**
     * 根据ID获取配置
     *
     * @param id 配置ID
     * @return 配置信息
     */
    SingleResponse<ConfigCO> getById(Long id);

    /**
     * 根据键名获取配置
     *
     * @param key 配置键名
     * @return 配置信息
     */
    SingleResponse<ConfigCO> getByKey(String key);

    /**
     * 查询配置列表
     *
     * @param qry 查询条件
     * @return 配置列表
     */
    MultiResponse<ConfigCO> list(ConfigListQry qry);

    /**
     * 更新配置状态
     *
     * @param id 配置ID
     * @param status 状态值(0:禁用,1:启用)
     * @return 操作结果
     */
    Response updateStatus(Long id, Integer status);
} 